# Esta clase maneja los estados posibles de los trainees.
class EstadosTraineeController < ApplicationController
  
  
   before_filter :ensure_adm
 
  # Recupera todos los estados de trainees para ser mostrados en pantalla.
  def index
  
  	@estados_trainee = EstadoTrainee.search_all(params[:search],params[:page])
    
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @estados_trainee }
    end
  end

  # Recupera el estado de trainee que va a ser mostrada en pantalla.
  def show
    @estado_trainee = EstadoTrainee.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @estado_trainee }
    end
  end
  
    # Recupera todos los estados de trainee para ser mostrados en pantalla.
  def show_all
	  @estados_trainee = EstadoTrainee.find(:all)
    respond_to do |format|
      format.html # show.html.erb
    end  
  end

# Prepara el nuevo estado de trainee para su posterior creación efectiva.
  def new
    @estado_trainee = EstadoTrainee.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @estado_trainee }
    end
  end

   # Recupera el estado de trainee que va a ser editado.
  def edit
    @estado_trainee = EstadoTrainee.find(params[:id])
  end

# Crea efectivamente el estado de trainee.
  def create
  	
  	@estado_trainee = EstadoTrainee.new(params[:estado_trainee])

    respond_to do |format|
      if @estado_trainee.save
        flash[:notice] = 'EstadoTrainee was successfully created.'
        format.html { redirect_back_or_default('/estados_trainee') }
        format.xml  { render :xml => @estado_trainee, :status => :created, :location => @estado_trainee }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @estado_trainee.errors, :status => :unprocessable_entity }
      end
    end
  end

# Actualizar efectivamente el estado de trainee.
  def update
    @estado_trainee = EstadoTrainee.find(params[:id])

    respond_to do |format|
      if @estado_trainee.update_attributes(params[:estado_trainee])
        flash[:notice] = 'EstadoTrainee was successfully updated.'
        format.html { redirect_back_or_default('/estados_trainee') }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @estado_trainee.errors, :status => :unprocessable_entity }
      end
    end
  end

# Elimina efectivamente el estado de trainee seleccionado.
  def destroy
 		@estado_trainee = EstadoTrainee.find(params[:id])
 		
 		if chequear_estado(@estado_trainee)
 			@estado_trainee.destroy
			respond_to do |format|
   			format.html { redirect_to(estados_trainee_url) }
   			format.xml  { head :ok }
   		end	
 		else
 			redirect_to (estados_trainee_path)
 		end
	end
	
# Verificar si existen trainees para el estado de trainee dado.	
	def chequear_estado(estado)
		if Trainee.find(:first,:conditions => ['estado_trainee_id = ?',estado.id])
			return false
		else
			if Ogxtrainee.find(:first,:conditions => ['estado_trainee_id = ?',estado.id])
				return false
			end			
		end
		return true
	end
	
end
